/**
 * 请求参数验证中间件
 */
const validateVideoType = {
  /**
   * 创建视频类型的参数验证
   */
  create: (req, res, next) => {
    const { name, description } = req.body;
    const errors = [];
    
    // 验证name字段
    if (!name || typeof name !== 'string' || name.trim().length === 0) {
      errors.push('视频类型名称不能为空');
    } else if (name.trim().length > 50) {
      errors.push('视频类型名称不能超过50个字符');
    }
    
    // 验证description字段
    if (description !== undefined && description !== null && typeof description !== 'string') {
      errors.push('视频类型描述必须是字符串');
    } else if (description && description.length > 255) {
      errors.push('视频类型描述不能超过255个字符');
    }
    
    if (errors.length > 0) {
      return res.status(400).json({
        code: 400,
        message: '参数验证失败',
        errors
      });
    }
    
    next();
  },
  
  /**
   * 更新视频类型的参数验证
   */
  update: (req, res, next) => {
    const { name, description } = req.body;
    const errors = [];
    
    // 验证type_id参数
    const { type_id } = req.params;
    if (!type_id || isNaN(parseInt(type_id)) || parseInt(type_id) <= 0) {
      errors.push('无效的视频类型ID');
    }
    
    // 验证name字段（可选）
    if (name !== undefined) {
      if (typeof name !== 'string' || name.trim().length === 0) {
        errors.push('视频类型名称不能为空');
      } else if (name.trim().length > 50) {
        errors.push('视频类型名称不能超过50个字符');
      }
    }
    
    // 验证description字段（可选）
    if (description !== undefined && description !== null && typeof description !== 'string') {
      errors.push('视频类型描述必须是字符串');
    } else if (description && description.length > 255) {
      errors.push('视频类型描述不能超过255个字符');
    }
    
    if (errors.length > 0) {
      return res.status(400).json({
        code: 400,
        message: '参数验证失败',
        errors
      });
    }
    
    next();
  }
};

module.exports = {
  validateVideoType
};